<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>js中的error</title>
  </head>
  <body>
    <a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error">Error MDN</a>
    <!-- 
        1、错误的类型
            Error: 所有错误的父类型
            ReferenceError：引用的变量不存在
            TypeError:数据类型不正确
            RangeError:数据值不在其所允范围内 ---死循环
            SyntaxError：语法错误
        2、错误处理
            捕获错误：try{} catch(){}
            抛出错误: throw error
        3、错误对象
            message属性：错误相关信息
            stack属性：记录信息
     -->
    <script>
      // 演示：ReferenceError：引用的变量不存在
      //   console.log(a)
      //   演示： TypeError:数据类型不正确
      //   const demo = () => {}
      //   demo()()
      //   演示：RangeError:数据值不在其所允范围内
      //   const demo = () => {
      //     demo()
      //   }
      //   demo()
      //演示：SyntaxError：语法错误
      //   console.log(2

      //   如何捕获一个错误
      //   1、try中放可能出现错误的代码，一旦出现错误立即停止try中代码的执行，调用catch，并携带错误信息
      //   try {
      //     console.log(1)
      //     console.log(a)
      //     console.log(2)
      //   } catch (error) {
      //     console.log('代码执行出错，原因：', error)
      //   }
      // 如何抛出一个错误
      function demo() {
        const date = Date.now()
        if (date % 2 === 0) {
          console.log('偶数可以正常工作')
        } else {
          throw new Error('奇数不可以工作')
        }
      }

      try {
        demo()
      } catch (error) {
        console.log(error)
      }
    </script>
  </body>
</html>
